package g

/*
 * @lc app=leetcode.cn id=66 lang=golang
 *
 * [66] 加一

给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外，这个整数不会以零开头。
*/

// @lc code=start
func plusOne(digits []int) []int {
	carryNum := 1
	for i := len(digits) - 1; i >= 0; i-- {
		digits[i] += carryNum
		if digits[i] == 10 {
			digits[i] = 0
			carryNum = 1
		} else {
			carryNum = 0
		}
	}

	if carryNum == 0 {
		return digits
	}
	newDigits := []int{1}
	newDigits = append(newDigits, digits...)
	return newDigits
}

// @lc code=end
